2. NP and NP completeness